package ar.com.hakasoft

import org.springframework.transaction.annotation.Transactional

import ar.com.hakasoft.entities.Factura

class FacturasService {

    static transactional = false

    @Transactional
	def eliminarFactura(id){
		def factura = Factura.get(id)
		if (factura){
			factura.fueEliminada = true
			factura.save(flush: true, failOnError: true)
		}
	}
	
	@Transactional
	def eliminarItemFactura(idFactura, idItem){
		def factura = Factura.get(idFactura)
		if (factura){
			def item = factura?.itemFactura.find{ item ->
				item.id == idItem
			}
			factura.removeFromItemFactura(item)
			factura.save(flush: true, failOnError: true)
			item.delete(failOnError: true, flush: true)
			return factura
		}
		return null
	}
	
	@Transactional(readOnly = true)
	def obtenerFactura(id, usuario){
		def factura
		if (id) {
			factura = Factura.get(id)
		} else {
			factura = new Factura(fecha: new Date(), username: usuario)
		}
		return factura
	}
	
	@Transactional
	def guardarFactura(factura){
		if (!factura.save(flush: true, failOnError: true)) {
			factura.errors.each { log.error it }
			factura.discard()
			return false
		}
		return true
	}
	
	@Transactional(readOnly = true)
	def obtenerFacturasSinCobrar(){
		return Factura.findAllByFueCobradaAndFueEliminada(false, false)?.sort{it.fecha}.reverse()
	}
	
//	@Transactional
//	def eliminarItem(item){
//		def factura = Factura.get(id)
//		if (factura){
//			factura.fueEliminada = true
//			factura.save(flush: true, failOnError: true)
//		}
//	}
	
}
